

void N25Q032A_RD_PAGE(uint32_t Address,  uint16_t  *pSPIReceiveData);
uint16_t N25Q032A_STATUS_RD();
uint8_t N25Q032A_Configure_RD();
void  N25Q032A_Prog_Page(  uint32_t Address,  uint16_t  *pSPISendData);
void  N25Q032A_Sector_Erase(  uint32_t Address);
void N25Q032A_WriteEnable();
void N25Q032A_WriteConfigRegister(uint8_t ConfigureValue);
void N25Q032A_QuadWrite_PAGE(  uint32_t Address,  uint16_t  *pSPISendData);
void N25Q032A_RDID(uint16_t  *pSPIReceiveData);
void N25Q032A_QuadRD_PAGE(  uint32_t Address,  uint16_t  *pSPIReceiveData);
void N25Q032A_Std_Config();

/* S25FLO32P flash chip command definitions */
#define N25Q032A_CM_READ   		0x03
#define N25Q032A_CM_READ_FAST 	0x0B
#define N25Q032A_CM_QUAL_READ  	0x3B
#define N25Q032A_CM_QUAD_READ  	0x6B
#define N25Q032A_CM_ID_READ    	0x9F

#define N25Q032A_CM_WRITE_EN  	0x06
#define N25Q032A_CM_WRITE_DIS 	0x04

#define N25Q032A_CM_ERASE_P4E 	0x20 // 4KB sector
#define N25Q032A_CM_ERASE_SE 	0xD8 // 64KB sector

#define N25Q032A_CM_PROG_PAGE 	0x02 // page programming
#define N25Q032A_CM_PROG_QPAGE 	0x32 // quad page programming

#define N25Q032A_CM_REG_WRITE_ST	0x01 //  write status register
#define N25Q032A_CM_REG_READ_ST  	0x05 //  read status register
#define N25Q032A_CM_REG_WRITE_CFG	0x61 //  write configure register
#define N25Q032A_CM_REG_READ_CFG	0x65 //  read configure register

#define DUMMY						0xFFFF

#define N25Q032A_CM_STD_CFG_VALUE	0xCF // standard configuration value
